mybatis @Select注解中当参数为空则不添加该参数的判断

您所在的位置:网站首页 mybatis select *和select字段 mybatis @Select注解中当参数为空则不添加该参数的判断

mybatis @Select注解中当参数为空则不添加该参数的判断

2023-09-20 10:58| 来源: 网络整理| 查看: 265

@Select("select * from "+DEPTTABLE+" ") List selectAllDept();

在mybatis中不用xml文件的形式,selectDept方法执行的就是上面的Sql语句,如果是遇到动态的语句就需要用到下面的形式。

1.用Provider去实现SQL拼接:

@SelectProvider(type=DeptDynaSqlProvider.class,method="count") Integer count(Map params); //DeptDynaSqlProvider.class 类中的方法 public String count(Map params){ return new SQL(){{SELECT("count(*)");FROM(DEPTTABLE);if(params.get("dept") != null){Dept dept = (Dept) params.get("dept");if(dept.getName() != null && !dept.getName().equals("")){WHERE(" name LIKE CONCAT ('%',#{dept.name},'%') ");}}}}.toString();}

2.还有一种方式是用script标签包围,像xml语法一样书写

@Select({"", "SELECT * FROM tbl_order", "WHERE 1=1", "", "AND mydate = #{mydate}", "", ""})

注意:方式1有个隐患就是当传入参数为空的时候,可能会造成全表查询。

复杂SQL用方式2会比较灵活(当然,并不建议写复杂SQL),而且可以抽象成通用的基类,使每个DAO都可以通过这个基类实现基本的通用查询,原理类似Spring JDBC Template。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3